package io.renren.modules.yckj.dto;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * 预约列表
 *
 * @author Mark sunlightcs@gmail.com
 * @since 1.0.0 2025-04-28
 */
@Data
@Schema(title = "预约列表")
public class OrderDTO implements Serializable {
    private static final long serialVersionUID = 1L;

    @Schema(title = "主键")
    private Long id;

    @Schema(title = "项目id")
    private Long projectId;

    @Schema(title = "项目名称")
    private String projectName;

    @Schema(title = "机器id")
    private Long machineId;

    @Schema(title = "机器名称")
    private String machineName;

    @Schema(title = "机器类型0时间不互斥,1时间互斥")
    private Integer machineType;

    @Schema(title = "分类id")
    private Long cateId;

    @Schema(title = "分类名称")
    private String cateName;

    @Schema(title = "联系人")
    private String contacts;

    @Schema(title = "联系人电话")
    private String phone;

    @Schema(title = "联系人邮箱")
    private String email;

    @Schema(title = "预约时间(日期)")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date bookTime;

    @Schema(title = "预约开始时间")
    private String bookStartTime;

    @Schema(title = "预约结束时间")
    private String bookEndTime;

    @Schema(title = "总的工时(如2.5小时）")
    private BigDecimal bookTotalTime;

    @Schema(title = "所有时间（以逗号隔开））")
    private String bookAllTimes;

    @Schema(title = "样品名称")
    private String name;

    @Schema(title = "拍摄方式：0现场，1云视频")
    private Integer shootingWay;

    @Schema(title = "完结方式：0线上，1线下")
    private Integer finishType;

    @Schema(title = "取样方式：0取样，1邮寄,2自带样品")
    private Integer way;

    @Schema(title = "取样地址")
    private String wayDetail;

    @Schema(title = "样品备注")
    private String note;

    @Schema(title = "是否回收：0需要，1不需要")
    private Integer recycle;

    @Schema(title = "回收详情，地址和联系方式")
    private String recycleDetail;

    @Schema(title = "预约人Id")
    private Long userId;

    @Schema(title = "预约人名称")
    private String userName;

    @Schema(title = "课题组id")
    private Long teamId;

    @Schema(title = "课题组名称")
    private String teamName;

    @Schema(title = "审核：0审核，1通过，2不通过")
    private Integer teamReview;

    @Schema(title = "状态，0待确认，1待收样，2进行中，3待支付，4支付完成")
    private Integer status;

    @Schema(title = "管理端用户Id")
    private Long bkId;

    @Schema(title = "管理端用户名称")
    private String bkName;

    @Schema(title = "客户是否签字：0否，1是")
    private Integer sign;

    @Schema(title = "客户签字图片url")
    private String signImage;

    @Schema(title = "支付方式：0个人余额支付，1课题组余额支付,2微信支付")
    private Integer payWay;

    @Schema(title = "预计费用")
    private BigDecimal amount;

    @Schema(title = "预计金额")
    private BigDecimal preAmount;

    @Schema(title = "实际金额")
    private BigDecimal actualAmount;

    @Schema(title = "是否开发票：0否，1是")
    private Integer isInvoice;

    @Schema(title = "报告文件，以json格式保存{name:,url}")
    private String reports;

    @Schema(title = "我的优惠券Id")
    private Long couponsLogId;

    @Schema(title = "优惠券Id")
    private Long couponsId;

    @Schema(title = "优惠券标题")
    private String couponsTitle;

    @Schema(title = "优惠券金额")
    private BigDecimal couponsDiscount;

    @Schema(title = "附项1名称")
    private String appendixOneName;

    @Schema(title = "附项1单价")
    private BigDecimal appendixOnePrice;

    @Schema(title = "附项1数量")
    private BigDecimal appendixOneNum;

    @Schema(title = "创建时间")
    private Date createTime;

    @Schema(title = "更新时间")
    private Date updateTime;

    @Schema(title = "项目图片")
    private String projectImage;

    @Schema(title = "显示时间")
    private List<String> showTimes;
}